/*
 * Protocolo_NIPC.h
 *
 *  Created on: 22/10/2011
 *      Author: utn_so
 */

#ifndef PROTOCOLO_NIPC_H_
#define PROTOCOLO_NIPC_H_

#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
//#include <sys/types.h>

typedef enum{
	handshake=0,
	leer=1,
	escribir=2
}tipoPedido;

typedef struct paquete{
	uint8_t type;
	uint16_t payload_Length;
	uint32_t nroSector;
	char payload[512];
}__attribute__((packed))paquete;


typedef paquete *paqueteNIPC;
int abre_SocketServidor(int puerto, const char *direccion);
int acepta_Socket(int server_sockfd);
int abre_SocketCliente(int puerto,const char *direccion);
int handshakePPD(int socket, int identificador_disco);
paquete *handshakePRAID(int socket);
//int handshakeFS(int socket, paquete *NIPC);
paquete PPD_RECIBEPEDIDO_RAID (int socket, paquete **NIPC);
paquete PPD_MANDAPEDIDO_RAID (int socket, paquete *NIPC);
char* empaquetar(paquete *pack);
int handshakeFS(int socket);

#endif /* PROTOCOLO_NIPC_H_ */
